<!DOCTYPE html>
<html lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>GCC 2.95 Caveats</title>
<link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css" />
</head>

<body>
<h1>GCC 2.95 Caveats</h1>

<ul>
  <li>GCC 2.95 will issue an error for invalid asm statements that had been
  silently accepted by earlier versions of the compiler.  This is particularly
  noticeable when compiling older versions of the Linux kernel (2.0.xx).
  Please refer to the FAQ (as shipped with GCC 2.95) for more
  information on this issue.</li>
   
  <li>GCC 2.95 implements type based alias analysis to disambiguate memory
  references.  Some programs, particularly the Linux kernel violate ANSI/ISO
  aliasing rules and therefore may not operate correctly when compiled with
  GCC 2.95.  

  Please refer to the
  FAQ (as shipped with GCC 2.95) for more
  information on this issue.</li>

  <li>GCC 2.95 has a known bug in its handling of complex variables for
  64bit targets.  Instead of silently generating incorrect code, GCC 2.95
  will issue a fatal error for situations it can not handle.

  This primarily affects the Fortran community as Fortran makes more use of
  complex variables than C or C++.</li>

  <li>GCC 2.95 has an integrated libstdc++, but does not have an integrated
  libg++.  Furthermore old libg++ releases will not work with GCC 2.95.  You can
  retrieve a recent copy of libg++ from the
  <a href="ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz">GCC
  ftp server</a>.
  <br />Note most C++ programs only need libstdc++.</li>

  <li> Exception handling may not work with shared libraries, particularly
  on alphas, hppas, rs6000/powerpc and mips based platforms.  Exception
  handling is known to work on x86 GNU/Linux platforms with shared libraries.
  </li>

  <li> In general, GCC 2.95 is more rigorous about rejecting invalid C++ code
  or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0, or EGCS 1.1.
  As a result it may be necessary to fix C++ code before it will compile with
  GCC 2.95.</li>

  <li>G++ is also converting toward the ISO C++ standard; as a result code
  which was previously valid (and thus accepted by other compilers and older
  versions of g++) may no longer be accepted.  The flag -fpermissive may
  allow some non-conforming code to compile with GCC 2.95.</li>

  <li>GCC 2.95 compiled C++ code is not binary compatible with EGCS 1.1.x,
  EGCS 1.0.x or GCC 2.8.x.</li>

  <li>GCC 2.95 does not have changes from the GCC 2.8 tree that were made
  between Sept 30, 1998 and April 30, 1999 (the official end of the GCC 2.8
  project).   Future GCC releases will include all the changes from the
  defunct GCC 2.8 sources.</li>
</ul>

</body>
</html>
